/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package vigas.componentes;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import vigas.util.ComparadorDePontos;

/**
 *
 * @author Lidiany
 */
public class CargaDistribuida {

    private List<Point> pontosDaCarga = new ArrayList<Point>();
    private float valorDaCarga;

    public CargaDistribuida() {
    }

    public void desenharCarga(Graphics g) {

        Collections.sort(pontosDaCarga, new ComparadorDePontos());

        Graphics2D g2d = (Graphics2D) g.create();
        g2d.setColor(Color.orange);
        Point pa  = null;
        Point pb = null;
        int largura = 0;

        for (int i = 1; i < pontosDaCarga.size(); i++) {
            pa = pontosDaCarga.get(i - 1);
            pb = pontosDaCarga.get(i);
            largura = Math.abs(  pb.x - pa.x );
            
            if(largura/2 == 0){               
                pa.x -= 5;
                pontosDaCarga.set(0, pa);
                largura = pb.x - pa.x;
            }
            
                g2d.fillRect(pa.x, pa.y - 35, largura, 35);
        }
      //  valorDaCarga = largura / 2;
        g2d.drawString(String.valueOf(valorDaCarga) + " kN/m", pa.x + largura / 2, pa.y - 59);
        g2d.dispose();      

    }

    public List<Point> getPontosDaCarga() {
        return pontosDaCarga;
    }

    public void setPontosDaCarga(List<Point> pontosDaCarga) {
        this.pontosDaCarga = pontosDaCarga;
    }

     

    public float getValorDaCarga() {
        return valorDaCarga;
    }

    public void setValorDaCarga(float valorDaCarga) {
        this.valorDaCarga = valorDaCarga;
    }

    public int getMetadeDaForca(){
        Point pa = pontosDaCarga.get(0);
        Point pb = pontosDaCarga.get(1);
        //calcula largura da viga e retorna a metade
        int metade = Math.abs(pb.x - pa.x) /2;
        return metade;
    }

    public float getInicioRelativo(Viga v){
        return (float)(pontosDaCarga.get(0).x - v.getInicio())/100;
    }

    public float getFimRelativo(Viga v){
        return (float)(pontosDaCarga.get(1).x - v.getInicio())/100;
    }

    public int getcomprimentoDaCarga(){
        return pontosDaCarga.get(1).x - pontosDaCarga.get(0).x;
    }

    public float comprimentoEmMetros() {

        int qtdePontos = pontosDaCarga.size();
        Point p0 = pontosDaCarga.get(0);
        Point p1 = pontosDaCarga.get(qtdePontos - 1);
        return (p1.x - p0.x) / 100;

    }
}
